--[[
可设置每个协议的发送频率

--检测10秒内的消息个数

--]]


local M = class("MsgCheck")


function M:ctor()
	self.msgs = {} --消息 msg:{count, last_time}
end

-- 5秒内收到的消息个数上限
function M:getLimitCount(name)
	local msg_const = g.const.check_msg
	local count = msg_const[name]
	if count then
		return count
	end
	return msg_const.default_count
end

-- return true/false
function M:check(name)
	local msg_const = g.const.check_msg
	if not msg_const.enable then
		--开关
		return true
	end
	local count = self:getLimitCount(name)
	if count == 0 then
		return false, 1, 1
	end
	
	local interval = msg_const.interval --5秒内
	local msg = self.msgs[name]
	local cur_time = g.time()
	if msg then
		if cur_time - msg.last_time >= interval then
			msg.last_time = cur_time
			msg.count = 1 --协议请求次数
		else
			msg.count = msg.count + 1
		end
		--check 一定时间内次数大于限定次数则返回false
		if msg.count > count then
			return false, msg.count, cur_time - msg.last_time
		end
	else
		self.msgs[name] = {
			last_time = cur_time,
			count = 1,
		}
	end
	return true
end

function M:banAccount()

end

return M
